package com.industrial.premu.mapper;

import com.industrial.premu.controller.cockpit.SsDetailDto;
import com.industrial.premu.domain.PreMuBenefitEvaluation;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface CockpitMapper {

    /**
     * 通过Uscc查询企业的研发经费
     * @param uscc
     * @return
     */
    List<PreMuBenefitEvaluation> selectCompanyRdFundsByUscc(@Param("uscc") String uscc);

    /**
     * 查询该年份行业的平均值
     * @param industryType
     * @param years
     * @return
     */
    BigDecimal selectCurrentYearIndustryTypeAvg(@Param("industryType") String industryType, @Param("years") String years);

    /**
     * 查询企业员工数量通过社会统一信用代码
     * @param uscc
     * @param year
     * @return
     */
    List<PreMuBenefitEvaluation> queryNumberEmployeesByUscc(@Param("uscc") String uscc, @Param("year") int year,@Param("preYear") int preYear);

    /**
     * 查询当前年度企业员工数的平均值
     * @param industryType
     * @param year
     * @return
     */
    BigDecimal selectCompanyPopelaYearAndIndustryType(@Param("industryType") String industryType, @Param("year") String year);

    /**
     * 查询单位数据
     *
     * @param uscc
     * @return
     */
    List<PreMuBenefitEvaluation> queryDwData(@Param("uscc") String uscc);

    /**
     * 按年度查询企业年份增值税
     * @param uscc
     * @return
     */
    List<SsDetailDto> queryZzsYear(@Param("uscc") String uscc);

    List<SsDetailDto> queryXfsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryQysdsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryGrsdsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryZysDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryCswhjssDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryFcsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryYhsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryCztdsysDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryTdzzsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryCcsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryClgzsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryGdzysDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryQsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryHjbhsDetail(@Param("uscc")String uscc);

    List<SsDetailDto> queryYssDetail(@Param("uscc")String uscc);

    /**
     * 查询企业基本信息
     * @param uscc
     */
    Map queryCompanyBaseInfo(@Param("uscc") String uscc);

    List<String> queryCompanyYears(@Param("uscc") String uscc);

    /**
     * 根据企业信用代码与年度查询企业的总耗煤量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectCoalConsumptionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地耗煤量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectCoalConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地耗煤量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryCoalConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的总耗电量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectPowerConsumptionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地耗电量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectPowerConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地耗电量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryPowerConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的总耗气量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectGasConsumptionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地耗气量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectGasConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地耗气量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryGasConsumptionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的化学需氧量排放量总量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectO2EmissionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地化学需氧量排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectO2EmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地化学需氧量排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryO2EmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的氨氮排放量总量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectAmmoniaEmissionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地氨氮排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectAmmoniaEmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地氨氮排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryAmmoniaEmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的二氧化硫排放量总量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectSo2EmissionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地二氧化硫排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectSo2EmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地二氧化硫排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustrySo2EmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询企业的氮氧化物排放量总量
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectNoxEmissionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询企业的单位用地氮氧化物排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectNoxEmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询行业单位用地氮氧化物排放
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    BigDecimal selectIndustryNoxEmissionPerUnitOfLandByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 根据企业信用代码与年度查询该企业所属行业
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    String selectIndustryTypeByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询该企业自有土地使用权土地用地面积、总用地面积以及占比
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    List<Map<String, Object>> selectUseAreaAndSumAreaAndProportionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询该企业通过租赁方式实际占用土地用地面积、总用地面积以及占比
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    List<Map<String, Object>> selectLeasedAreaAndSumAreaAndProportionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询该企业其他实际占用土地用地面积、总用地面积以及占比
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    List<Map<String, Object>> selectOtherAreaAndSumAreaAndProportionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 根据企业信用代码与年度查询该企业对外出租土地用地面积、总用地面积以及占比
     *
     * @param uscc  企业信用代码
     * @param years 年度
     * @return
     */
    List<Map<String, Object>> selectRentOutAreaAndSumAreaAndProportionByUsccAndYears(@Param("uscc") String uscc, @Param("years") String years);

    /**
     * 查询企业总能耗
     * @param uscc
     * @param years
     * @return
     */
    BigDecimal selectCompanyTotalUsed(@Param("uscc") String uscc, @Param("years") String years);

    BigDecimal selectIndustryCoalConsumptionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustryPowerConsumptionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustryGasConsumptionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustryO2EmissionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustryAmmoniaEmissionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustrySo2EmissionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    BigDecimal selectIndustryNoxEmissionPerUnitOfLandByUsccAndYearsAvg(@Param("uscc") String uscc, @Param("years") String years, @Param("industryType") String industryType);

    /**
     * 查询单位能耗销售收入
     * @param uscc
     * @param years
     * @return
     */
    BigDecimal selectDwNhXssr(@Param("uscc") String uscc, @Param("years") String years);

    BigDecimal selectDwWrwXssr(@Param("uscc") String uscc, @Param("years") String years);
}
